package operation.freeMarker.util;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;

/**
 * freemarker工具类
 */
public class FreemarkerUtil {
    // Android模板地址
    static String ftlPathAndroid = "server\\src\\main\\java\\operation\\android\\ftl\\";
    // web模板地址
    static String ftlPathWeb = "server\\src\\main\\java\\operation\\web\\ftl\\";
    // 其他模板地址
    static String ftlPathTest = "server\\src\\main\\java\\operation\\freeMarker\\ftl\\";
    // 多语言处理模板地址
    static String ftlPathTranslate = "server\\src\\main\\java\\operation\\translate\\multilingual\\";

    static Template temp;

    /**
     * 读取模板
     * 0 Android地址
     * 1 web地址
     * 2 测试地址
     * 3 多语言处理模板地址
     */
    public static void initConfig(int ftlPath, String ftlName) throws IOException {
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_29);
        if(ftlPath == 0){
            cfg.setDirectoryForTemplateLoading(new File(ftlPathAndroid));
        } else if(ftlPath == 1) {
            cfg.setDirectoryForTemplateLoading(new File(ftlPathWeb));
        } else if(ftlPath == 2) {
            cfg.setDirectoryForTemplateLoading(new File(ftlPathTest));
        } else if(ftlPath == 3) {
            cfg.setDirectoryForTemplateLoading(new File(ftlPathTranslate));
        }
        cfg.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_29));
        temp = cfg.getTemplate(ftlName);
    }

    /**生成模板方法*/
    public static void generator(String fileName, Map<String,Object> map) throws IOException, TemplateException {
        FileWriter fw = new FileWriter(fileName);
        BufferedWriter bw = new BufferedWriter(fw);
        temp.process(map, bw);
        bw.flush();
        fw.close();
    }
}
